package com.cy;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

/**
 * @SpringBootApplication注解用于描述SpringBoot项目的启动类，由此直接描述的类为springboot入口对象，我们
 * 可以通过这个入口来启动springboot项目，这个入口类有什么特点？
 * 1.由@SpringBootApplication注解描述？（这样的启动类，在springboot项目中只能有一个）
 * 2.包一个main方法，在方法中完成springboot项目的初始化？（）


 * FAQ：请问初始化时springboot底层会做什么？
 * 1.加载类（通过ClassLoader类加载器将指定位置的类读到内存->底层通过线程调用IO从磁盘读取到内存）
 * 2.对类进行分析（创建字节码对象-class类型，通过反射获取其配置信息）
 * 3.对于指定配置（列如由spring指定的注解描述）的对象存储其配置信息（借助BeanDefinition对象存储）
 * 4.基于BeanDefinition对象中class的配置构建类的实例（Bean对象），从进行bean对象的管理
 *
 *
 *
 * http://www.baidu.com
 * 1.将url发送给域名服务器（DNS），通过DNS解析域名获取一个IP地址(IP地址时网络中计算机的唯一标识)
 * 2.通过IP地址找到网络中的计算机服务器，在通过端口号定位到具体的web服务器（例如TomCat）
 * 3.web服务器可以通过线程调用IO读取网络中http协议中的数据，并对数据进行解析，让后封装到request对象
 * 4.web服务器调用javaee规范中的对象（Filter，Servlet）处理请求，请求处理结束再响应一个结果传递到客户端
 *
 */
@SpringBootApplication
public class Application {

    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }

}
